D = Device( camming3, camming4)
C = Calculation functions
The DC12RotCut function execute the necessary calculations and provides for the writing of the cam table to a CAMMING3 or CAMMING4 devices to execute a circular fly cut.
In particular the function manages the control of an axis (Slave) consisting of a single or multi blade cutting cylinder (maximum 6 blades) by syncing it to the material to be cut by reading the count given by an encoder (Master) placed on the material.
The function has the possibility (opzional) to re-adjust the cutting counting rotary axis (Slave) through a power input that can be plain or to interrupt, placed in a known point of the same axis path.
The function also has the ability to synchronize the cut on material via a photocell, positioned before cutting, reading a notch on the material.
Picture 1
The Slave axis resolution (measure and pulse parameters) should be set so that the unit of measurement of the counter is in degrees, degrees/10, degrees/100 or degrees/1000.
The “Synchronous space” parameter (aslParam[6]) establishes how much space (in degrees) the shearing cylinder keeps his peripheral speed equal to the speed of the line (cutting stroke).
In the space between the cuts, the shearing cylinder accelerates or decelerates his run in order to be ready to meet the next cut. If the workpiece is great, It is likely that these intermediate spaces, the shearing cylinder making a stop. The stop is always in the midpoint between a blade and the subsequent (in the case of a single blade, in the half cylinder on the side opposite the blade).
In the configuration file must be configured (in any case) also a COUNTER3 device that is used by the function to manage the photocell on the material. This device will have input encoders count as a reference of the master.
The function should be placed on a point of the application that runs continuously (every logical round of Qmove). To attach the Slave to Master simply give a STARTCAM command after you execute the preset.
The preset operation (zero point search) of the cutting cylinder axis, must be done at every system power-up. The preset uses a sensor whose declaration must be made in the configuration of the CAMMINGx device, on the configuration file. This sensor (that can be the same as the one used for power factor correction of the axis) must be declared as “IAZero” (enable input zero pulse).
The preset must reset the count (or upload a share), so when the count value is 0 the blade (or one of the blades) you are exactly on the cutting point (see the picture 1)
Dopo l'operazione di Preset, si deve comandare un posizionamento dell'asse cilindro alla quota:
QUOTA_POS = ANG_GIRO - (SPAZIO_SYNC/2)
Where:
ANG_GIRO = 360° (in the unit of used measure, 360 if degrees, 3600 if tenths, etc…)
SPACE_SYNC = is the aslParam[6] parameter (“Synchronous space”)
For clarification see the examples below.
L'asse cilindro di taglio ha la possibilità di essere rifasato ad ogni giro mediante un ingresso digitale normale o veloce (ad interrupt).
Il rifasamento è utile in tutti quei casi in cui la risoluzione dell'encoder (rapporto tra il numero di impulsi giro dell'encoder e lo spazio periferico percorso dal cilindro di taglio), non è un numero finito, oppure nel caso in cui ci siano degli slittamenti tra il movimento del cilindro e l'encoder stresso.
Una limitazione dell'ingresso di rifasamento si ha quando si utilizza un cilindro monolama. In questo caso è infatti necessario che nel momento dell'attivazione del sensore di rifasamento, il cilindro di taglio si trovi con la lama in fase di taglio (e cioè mentre sta eseguendo il tratto di sincronismo).
Esiste la possibilità di sincronizzare il taglio del materiale con una tacca presente sul materiale stesso (aslParam[11] = 1).
Tale tacca viene rilevata tramite una fotocellula veloce che entra come interrupt nel Qmove. La fotocellula fa in modo che il sistema tenga conto di eventuali slittamenti del materiale sul proprio encoder, utilizzando la tacca come riferimento di posizione. Nel caso, su un pezzo, la tacca non venga rilevata, viene posta in esecuzione la lunghezza del pezzo impostata, più l'eventuale correzione rilevata nel pezzo precedente.
Nel caso di utilizzo della fotocellula di rilevamento tacca su materiale, non è più necessario dare il comando di STARTCAM allo slave, in quanto l'aggancio viene effettuato automaticamente in corrispondenza della prima tacca rilevata.
| GRAFICO VELOCITA'-TEMPO DELLA CAMMA PER IL TAGLIO CIRCOLARE (fig.2) |
![]() |
DC12RotCut (cmCam, cnContM, aslParam, sfChangeExe, sbErrore)
Parametri:
L'array “aslParam” deve essere di almeno 16 elementi
Master = Asse che trasporta il materiale della linea
Slave = Asse del Cilindro di taglio
| IN/OUT | TIPO VARIABILE | NOME DI ESEMPIO | DIM | |
|---|---|---|---|---|
| IN | CAMMING3 CAMMING4 | CmCam | Tipo di device a cui si può applicare la funzione | |
| IN | COUNTER3 | cnContM | Tipo di device da dichiarare sul file di configurazione (obbligatorio) | |
| IN | ARRSYS | aslParam[1] | L | Lunghezza pezzo da tagliare (UM Master) |
| IN | ARRSYS | aslParam[2] | L | Numero di lame nel cilindro di taglio [1 ÷ 6] |
| IN | ARRSYS | aslParam[3] | L | Raggio del cilindro di taglio (UM Master) (per calcolo veocità nel tratto di sincronismo) |
| IN | ARRSYS | aslParam[4] | L | UM Slave (1=gradi, 10=dec.grado, 100=cent.grado, 1000=mill.grado) |
| IN | ARRSYS | aslParam[5] | L | Tipo di rampe per acc/decel Slave (0=trapezoidali, 1=epicicloidali) |
| IN | ARRSYS | aslParam[6] | L | Spazio Slave di sincronismo di velocità per il taglio (UM Slave) |
| IN | ARRSYS | aslParam[7] | L | Tipo di ingresso di rifasamento Slave (0=nessuno, 1=ingr.interrupt, 2=ingr.normale) |
| IN | ARRSYS | aslParam[8] | L | Fronte dell'ingresso di rifasamento (0=discesa, 1=salita) |
| IN | ARRSYS | aslParam[9] | L | Valore da caricare sul conteggio all'attivazione del sensore di rifasamento (UM Slave) |
| IN | ARRSYS | aslParam[10] | L | Percentuale di extravelocità del cilindro di taglio rispetto alla linea, nel tratto a velocità costante (%) [-99 ÷ 99] |
| IN | ARRSYS | aslParam[11] | L | Tipo di ingresso per la cattura tacca su materiale (0=nessuna, 1=ingr.interrupt) |
| IN | ARRSYS | aslParam[12] | L | Fronte dell'ingresso per la cattura tacca su materiale (0=discesa,1=salita) (*) |
| IN | ARRSYS | aslParam[13] | L | Distanza tra la fotocellula di rilevamento tacca e il centro del cilindro di taglio (UM master) (*) |
| IN | ARRSYS | aslParam[14] | L | Sul pezzo da tagliare: Distanza tra la tacca e la fine del pezzo. (UM Master) (*) |
| IN | ARRSYS | aslParam[15] | L | Valore di 'CodeM' da impostare sul settore di taglio. Questo valore si può leggere durante il funzionamento dinamico sulla variabile 'codeMex'. (i valori: -99 e -100 sono utilizzati internamente alla funzione e non possono essere impostati) |
| IN | ARRSYS | aslParam[16] | L | Velocità massima della linea (UM master/sec) |
| IN | ARRSYS | aslParam[17] | L | Tempo di campionamento del device camming (msec) |
| OUT | SYSTEM | sfChangeExe | F | Flag che quando vale 1 indica che il cambio di parametri al volo è in corso di esecuzione. Una volta completato il cambio parametri, il flag torna a 0. |
| OUT | SYSTEM | sbErrore | B | Variabile contenente l'eventuale errore scaturito dalla funzione (vedere il paragrafo relativo) |
(*) = Opzionale. Da impostarsi solo nel caso di utilizzo di fotocellula per la lettura della tacca sul materiale.
Ad ogni richiamo della funzione se intervengono degli errori, questi vengono riportati sulla variabile di errore (indicata come “sbErrore” nella tabella).
I valori della variabili dal 10 in poi sono da considerarsi “warnings”, segnalazioni cioè che non causano una emergenza all'asse Slave. I valori inferiori al 10, invece, pregiudicano il funzionamento causando, in caso di comparsa in fase dinamica, una fermata dell'asse.
La variabile di errore non deve mai essere azzerata (provvede automaticamente la funzione a farlo quando non ci sono più errori).
Il significato di tali valori è riassunto di seguito:
0: Nessun errore
1: Unità di misura Slave non corretta
2: Misura del raggio o numero delle lame non corretti
3: Risoluzione asse Slave non corretta
4: Spazio di sincronismo (parametro aslParam[6]) troppo piccolo
5: Spazio Master (del materiale) tra un tratto di sincronismo e l'altro, troppo piccolo
6: Spazio di sincronismo (parametro aslParam[6]) errato
7: Percentuale di velocità (parametro aslParam[10]) nel tratto di sincronismo errata
10: Warning: Rifasamento non possibile (settore sincronismo troppo piccolo)
11: Warning: Spazio Sincronismo errato (cambio parametro impossibile)
12: Warning: Perc.extravelocità in taglio errata (cambio parametro impossibile)
13: Warning: Spazio Master (del materiale) tra un tratto di sincronismo e l'altro, troppo piccolo
14: Warning: Spazio Master negativo. Procedere con variazioni minori
15: Warning: Spazio Vkost troppo piccolo
16: Warning: Saturazione analogica Slave durante il tratto fuori sincronismo
CONFIGURAZIONE DEI DEVICES NEL FILE DI CONFIGURAZIONE
Nel file di configurazione devono essere configurati due device. Un CAMMING3 (o 4) e un COUNTER3. Eccoli descritti di seguito:
; TCamp CountS CountMA CountMB IntL IAZero IntLM IAZeroM InG InGInt IoutA Out cmCam CAMMING3 1 2.CNT02 2.CNT01 X.X 1 2.INP01 X X.X 2.INP08 1 2.AN02 X.X
; TCamp Count IntL IAZero InG InGInt cnContM COUNTER3 1 2.CNT01 2 X.X X.X
IMPLEMENTAZIONE DELLA FUNZIONE SU UN TASK
SENZA FOTOCELLULA SU MATERIALE
INIT:
aslParam[1] = 10000 ;Lunghezza pezzo (UM Master)
aslParam[2] = 3 ;Numero lame di taglio nel cilindro di taglio
aslParam[3] = 4000 ;Raggio del cilindro di taglio (per tratto a vel kost)(UM Master)
aslParam[4] = 10 ;UM (10=decimi di grado)
aslParam[5] = 0 ;Tipo di rampe (0=trapez.)
aslParam[6] = 400 ;Spazio di sincronismo per taglio (40°)
aslParam[7] = 1 ;Tipo di rifasamento (1=ingresso ad interrupt)
aslParam[8] = 1 ;Fronte dell'ingresso di rifasamento (1=salita)
aslParam[9] = 0 ;Quota da caricare su sensore di rifasam. (gradi/10)
aslParam[10] = 5 ;Percentuale di vel in + o - nel tratto di sincronismo (% vel sync)
aslParam[11] = 0 ;Tipo di ingresso per la cattura tacca su materiale (0=nessuno)
aslParam[12] = 0 ;Non utilizzato
aslParam[13] = 0 ;Non utilizzato
aslParam[14] = 0 ;Non utilizzato
aslParam[15] = 1000 ;Valore di codeM da impostare sul settore di taglio
aslParam[16] = 10000 ;Velocità massima Linea (1000 UMMaster/sec)
aslParam[17] = 2 ;Tempo di campionamento del device "cmCam"
MAIN:
DC12RotCut (cmCam, cnContM, aslParam, sfChangeExe, sbErrore) ;Chiamata a funzione
IF ifPreset ;Gestione Preset
IF gfFrn01
gfFrn01 = 0
IF (NOT cmCam:st_camex)
PRESET cmCam
gfPresetOn = 1
ENDIF
ENDIF
ELSE
gfFrn01 = 1
ENDIF
IF gfPresetOn ;Posizionamento dopo il Preset
IF cmCam:st_prsok
cmCam:setpos = 3600 - (aslParam[6] / 2) ;Quota_pos = ang_giro - (spazio_sync/2)
cmCam:setvel = (10 * cmCam:maxvel) / 100 ;10% di vel.max.
START cmCam
gfPresetOn = 0
ENDIF
ENDIF
IF ifStart ;Gestione ingresso di start
IF gfFrn02
gfFrn02 = 0
IF (NOT cmCam:st_camex) AND (NOT sbErrore)
STARTCAM cmCam
ENDIF
ENDIF
ELSE
gfFrn02 = 1
ENDIF
IF ifStop ;Gestione ingresso di stop
IF gfFrn03
gfFrn03 = 0
IF cmCam:st_camex
STOPCAM cmCam
ENDIF
ENDIF
ELSE
gfFrn03 = 1
ENDIF
WAIT 1
JUMP MAIN
END
CON FOTOCELLULA SU MATERIALE
INIT:
aslParam[1] = 10000 ;Lunghezza pezzo (UM Master)
aslParam[2] = 3 ;Numero lame di taglio nel cilindro di taglio
aslParam[3] = 4000 ;Raggio del cilindro di taglio (per tratto a vel kost)(UM Master)
aslParam[4] = 10 ;UM (10=decimi di grado)
aslParam[5] = 0 ;Tipo di rampe (0=trapez.)
aslParam[6] = 400 ;Spazio di sincronismo per taglio (40°)
aslParam[7] = 1 ;Tipo di rifasamento (1=ingresso ad interrupt)
aslParam[8] = 1 ;Fronte dell'ingresso di rifasamento (1=salita)
aslParam[9] = 0 ;Quota da caricare su sensore di rifasam. (gradi/10)
aslParam[10] = 5 ;Percentuale di vel in + o - nel tratto di sincronismo (% vel sync)
aslParam[11] = 1 ;Tipo di ingresso per la cattura tacca su materiale (1=inp interr.)
aslParam[12] = 1 ;Fronte dell'ingresso per la cattura tacca su materiale (1=salita)
aslParam[13] = 1000 ;Distanza tra la fotocellula di rilevamento tacca e il centro del cilindro di taglio
aslParam[14] = 200 ;Sul pezzo da tagliare: Distanza tra la tacca e la fine del pezzo (UM Master)
aslParam[15] = 1000 ;Valore di codeM da impostare sul settore di taglio
aslParam[16] = 10000 ;Velocità massima Linea (1000 UMMaster/sec)
aslParam[17] = 2 ;Tempo di campionamento del device "cmCam"
MAIN:
IF gfStart AND cmCam:st_prsok
DC12RotCut (cmCam, cnContM, aslParam, sfChangeExe, sbErrore) ;Chiamata a funzione
ENDIF
;gfStart è un flag che mi indica che lo Slave è abilitato a ricevere uno start e a fare il movimento automatico
;(La funzione si incarica anche dello start che avviene al primo impulso di fotocellula)
IF ifPreset ;Gestione Preset
IF gfFrn01
gfFrn01 = 0
IF (NOT cmCam:st_camex)
PRESET cmCam
gfPresetOn = 1
ENDIF
ENDIF
ELSE
gfFrn01 = 1
ENDIF
IF gfPresetOn ;Posizionamento dopo il Preset
IF cmCam:st_prsok
cmCam:setpos = 3600 - (aslParam[6] / 2) ;Quota_pos = ang_giro - (spazio_sync/2)
cmCam:setvel = (10 * cmCam:maxvel) / 100 ;10% di vel.max.
START cmCam
gfPresetOn = 0
ENDIF
ENDIF
IF ifStop ;Gestione ingresso di stop
IF gfFrn03
gfFrn03 = 0
IF cmCam:st_camex
STOPCAM cmCam
ENDIF
ENDIF
ELSE
gfFrn03 = 1
ENDIF
WAIT 1
JUMP MAIN
END